import FExtend from "@/lui/FExtend.vue";
import { VXETable } from 'vxe-table'
import XEUtils from "xe-utils";
VXETable.formats.add('formatDisabled', {
    cellFormatMethod ({ cellValue }) {
        return Number(cellValue) === 1 ? '已停用' : '正常'
    }
})
VXETable.formats.add('formatIs', {
    cellFormatMethod ({ cellValue }) {
        return Number(cellValue) === 1 ? '是' : ''
    }
})
VXETable.formats.add('formatIsYs', {
    cellFormatMethod ({ cellValue }) {
        return cellValue ? '是' : ''
    }
})
VXETable.formats.add('formatIsAdmin', {
    cellFormatMethod ({ cellValue }) {
        return Number(cellValue) === 1 ? '是' : ''
    }
})
VXETable.formats.add('formatSex', {
    cellFormatMethod ({ cellValue }) {
        return cellValue ? (cellValue === '1' ? '男' : '女') : ''
    }
})
VXETable.formats.add('formatPrice', {
    cellFormatMethod ({ cellValue }) {
        let p = XEUtils.round(cellValue, 2)
        return p ? p : ''
    }
})
VXETable.formats.add('formatQty', {
    cellFormatMethod ({ cellValue }) {
        return XEUtils.toNumber(cellValue) ? XEUtils.round(cellValue, 4) : ''
    }
})
VXETable.formats.add('formatMoney', {
    cellFormatMethod ({ cellValue }) {
        let p = XEUtils.round(cellValue, 2)
        return p ? XEUtils.toFixed(p, 2) : ''
    }
})
VXETable.formats.add('formatAmount', {
    cellFormatMethod ({ cellValue }) {
        return XEUtils.commafy(XEUtils.toNumber(cellValue), { digits })
    }
})
VXETable.formats.add('formatZero', {
    cellFormatMethod ({ cellValue }) {
        return cellValue === 0 ? '' : cellValue
    }
})

// 创建一个复杂的筛选器
VXETable.renderer.add('FExtend', {
    // 不显示底部按钮，使用自定义的按钮
    showFilterFooter: false,
    // 筛选模板
    renderFilter (renderOpts, params) {
        return <FExtend params={ params }></FExtend>
    },
    // 重置数据方法
    filterResetMethod (params) {
        const { options } = params
        options.forEach((option) => {
            option.data = { vals: [], sVal: '', fMenu: '', f1Type: '', f1Val: '', fMode: 'and', f2Type: '', f2Val: '' }
        })
    },
    // 筛选数据方法
    filterMethod (params) {
        const { option, row, column } = params
        const cellValue = row[column.field]
        const { vals, f1Type, f1Val } = option.data
        if (cellValue) {
            if (f1Type) {
                return cellValue.indexOf(f1Val) > -1
            } else if (vals.length) {
                // 通过指定值筛选
                return vals.includes(cellValue)
            }
        }
        return false
    }
})
